<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // let a = 1
        // 并列的异步，是同步触发的
        // 函数闭包，专门为了异步存在
        // 函数可以访问外部特定时刻的引用---时间线
        // setTimeout(() => {
        //     console.log(a)
        //     a = 2
        // }, 1000)
        // setTimeout(() => {
        //     console.log(a)
        //     a = 4
        // }, 2000)

        // function fn() {
        //     console.log(a)
        //     a = 3
        // }
        // fn()


        // const a = { value: 1 }
        // const value = a.value
        // setTimeout(() => {
        //     console.log(value)
        //     a.value = 2
        // }, 1000)
        // setTimeout(() => {
        //     console.log(value)
        // }, 2000)


        // let a = 1
        // function wait(cb) {
        //     setTimeout(() => {
        //         cb()
        //     }, 1000)
        // }
        // function callback() {
        //     console.log(a)
        // }
        // wait(callback)
        // a = 2

        // wait(()=>{
        //     console.log(1)
        //     wait(()=>{
        //         console.log(2)
        //         wait(()=>{
        //             console.log(3)
        //             wait(()=>{
        //                 console.log(4)
        //             })
        //         })
        //     })
        // })

        // new Promise((resolve, reject) => {
        //     setTimeout(() => {
        //         resolve('等待几秒')
        //     }, 1000)
        // })
        //     .then(res => { console.log(res); return res })
        //     .then(res => console.log(res))

        function wait(n) {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve(`等待${n}毫秒`)
                }, n)
            })
        }
        wait(1000)
            .then(res => {
                console.log(res)
                return wait(1000)
            })
            .then(res => {
                console.log(res)
                return wait(1000)
            })
            .then(res=>{
                console.log(res)
            })




    </script>
</body>

</html>